ChatGPTに書いてもらった run.sh
https://gyazo.com/ba13e47d124c15db9e49ee6490139aee
ラズピコに書き込んだプログラムは一時的に待機状態に入るので、ラズピコからの出力を cat で受けさせつつ、echo run して実行を開始させるコマンド run.sh をChatGPTに書いてもらった。
code:run.sh
# 引数からデバイスファイル名を取得
DEVICE=$1
# tailコマンドをバックグラウンドで実行
cat "$DEVICE" &
TAIL_PID=$!
# メッセージをデバイスに書き込む
# 一発目にダミーの echo があると安定して動く
echo > "$DEVICE" &
echo "run" > "$DEVICE" &
# Ctrl-Cが押されたら、tailコマンドを終了
function cleanup {
kill $TAIL_PID
exit 0
}
trap cleanup INT
# 無限ループを実行
while true; do
sleep 1
done
ラズピコで動かすプログラム
code:test.c
const uint LED_PIN = 25;
int main() {
bi_decl(bi_program_description("This is a test binary."));
bi_decl(bi_1pin_with_name(LED_PIN, "On-board LED"));
stdio_init_all();
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
// 標準入力から「run」を受け取るまで待機
while (1) {
scanf("%s", buf);
if (buf0 == 'r' && buf1 == 'u' && buf2 == 'n') { break;
}
}
while (1) {
gpio_put(LED_PIN, 0);
sleep_ms(250);
gpio_put(LED_PIN, 1);
puts("Hello World!!!!!\n");
sleep_ms(1000);
}
}
実行手順
code:sh
# (1) 上記の test.c をラズピコへ書き込む
# (2) ラズピコをパソコンから抜き差しして「run」の入力待ち状態にする
# (3) 以下のコマンドを実行
$ ./run.sh /dev/cu.usbmodem21101
Hello World!!!!!
Hello World!!!!!
Hello World!!!!!